package gui;

import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Rectangle;
import java.io.*;
import java.text.ParseException;

import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.filechooser.FileFilter;
import javax.swing.plaf.FileChooserUI;
import javax.swing.text.MaskFormatter;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;

import controllers.ProdutoController;

import negocios.Fachada;
import negocios.Produto;

import javax.swing.JTextField;    



import gui.TamanhoMaximo;

import gui.MainClass;

public class CadastroDeProduto extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel lTitulo = null;
	private JLabel lDescreicao = null;
	private JFormattedTextField tDescricao = null;
	private JLabel lArtigo = null;
	private JComboBox cArti = null;
	private JLabel lLinha = null;
	private JComboBox cLinha = null;
	private JLabel jLabel = null;
	private JComboBox cColecao = null;
	private JButton bConfirmar = null;
	private JButton bLimpar = null;
	private JButton bCancelar = null;
	private JLabel lImagem = null;
	private JButton bCarregar = null;
	private JLabel jLabel1 = null;
	private JComboBox jComboBox = null;
	private JLabel jLabel2 = null;
	private JComboBox cColecao1 = null;
	
	private javax.swing.JFileChooser jFileChooser = null;
	

	/**
	 * @param owner
	 */
	public CadastroDeProduto(Frame owner) {
		super(owner);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(530, 334);
		this.setModal(true);
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		this.setContentPane(getJContentPane());
		this.setLocationRelativeTo(null);
		
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private javax.swing.JFileChooser getJFileChooser() {
		if (jFileChooser == null) {
			jFileChooser = new JFileChooser(".");
			jFileChooser.setMultiSelectionEnabled(true);
			jFileChooser.setDialogTitle("Adicionar  de Fotos");
			jFileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
			FileFilter filtro1 = new ExtensionFileFilter("JPG and JPEG", new String[] { "JPG", "JPEG" });
			jFileChooser.setFileFilter(filtro1);
		}
		
		return jFileChooser;
	}
	private String loadFile() {
		int state = getJFileChooser().showOpenDialog(this);
		String s=null;  		
		if (state == JFileChooser.APPROVE_OPTION) {
			File f = getJFileChooser().getSelectedFile();
			s = f.getPath();
			try {
				BufferedReader br = new BufferedReader(new FileReader (f));
				br.close();
				setTitle("SIGConfex");
			} catch (FileNotFoundException e1) {
				JOptionPane.showMessageDialog(null, "VC � CEGO???ESCOLHA UMA OPCAO", "SIGConfex -ERRO", JOptionPane.INFORMATION_MESSAGE, null);
				//e1.printStackTrace();
			} catch (IOException e1) {
				JOptionPane.showMessageDialog(null, "VC � CEGO???ESCOLHA UMA OPCAO", "SIGConfex -ERRO", JOptionPane.INFORMATION_MESSAGE, null);
				//e1.printStackTrace();
			}
		}
	return s;
	}
	
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(13, 232, 109, 16));
			jLabel2.setText("Codigo Sequencial");
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(13, 170, 60, 16));
			jLabel1.setText("Familia");
			lImagem = new JLabel();
			lImagem.setBounds(new Rectangle(316, 60, 175, 141));
			lImagem.setHorizontalAlignment(SwingConstants.CENTER);
			lImagem.setText("Imagem.JPG");
			lImagem.setBorder(LineBorder.createGrayLineBorder());
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(13, 200, 68, 16));
			jLabel.setText("Cole��o:");
			lLinha = new JLabel();
			lLinha.setBounds(new Rectangle(13, 140, 68, 16));
			lLinha.setText("Linha:");
			lArtigo = new JLabel();
			lArtigo.setBounds(new Rectangle(13, 110, 68, 16));
			lArtigo.setText("Artigo:");
			lDescreicao = new JLabel();
			lDescreicao.setBounds(new Rectangle(13, 80, 68, 16));
			lDescreicao.setText("Descri��o: ");
			lTitulo = new JLabel();
			lTitulo.setFont(new Font("Tahoma", Font.BOLD, 25));
			lTitulo.setBounds(new Rectangle(115, 20, 288, 23));
			lTitulo.setText("Cadastro de Produtos");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(lTitulo, BorderLayout.NORTH);
			jContentPane.add(lDescreicao, null);
			jContentPane.add(getTDescricao(), null);
			jContentPane.add(lArtigo, null);
			jContentPane.add(getCArti(), null);
			jContentPane.add(lLinha, null);
			jContentPane.add(getCLinha(), null);
			jContentPane.add(jLabel, null);
			jContentPane.add(getCColecao(), null);
			jContentPane.add(getBConfirmar(), null);
			jContentPane.add(getBLimpar(), null);
			jContentPane.add(getBCancelar(), null);
			jContentPane.add(lImagem, null);
			jContentPane.add(getBCarregar(), null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(getJComboBox(), null);
			jContentPane.add(jLabel2, null);
			jContentPane.add(getCColecao1(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes tDescri��o	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	
	private JTextField getTDescricao() {
		if (tDescricao == null) {
			tDescricao = new JFormattedTextField();
			tDescricao.setBounds(97, 77, 173, 20);
			tDescricao.setDocument(new TamanhoMaximo(20));
		}
		return tDescricao;
	}

	/**
	 * This method initializes cArti	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCArti() {
		if (cArti == null) {
			cArti = new JComboBox();
			cArti.setBounds(new Rectangle(97, 107, 173, 20));
			cArti.addItem("Escolha uma opcao");
			cArti.addItem("verao");
			cArti.addItem("inverno");
			cArti.addItem("outurno");
			cArti.addItem("primavera");
			
		}
		return cArti;
	}

	/**
	 * This method initializes cLinha	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCLinha() {
		if (cLinha == null) {
			cLinha = new JComboBox();
			cLinha.setBounds(new Rectangle(97, 137, 173, 20));
			cLinha.addItem("Escolha uma opcao");
			cLinha.addItem("preta");
			cLinha.addItem("amarela");
			cLinha.addItem("verde");
		}
		return cLinha;
	}

	/**
	 * This method initializes cColecao	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCColecao() {
		if (cColecao == null) {
			cColecao = new JComboBox();
			cColecao.setBounds(new Rectangle(97, 197, 173, 20));
			cColecao.addItem("Escolha uma opcao");
			cColecao.addItem("verao-inverno");
			cColecao.addItem("inverno-verao");
			cColecao.addItem("outurno-primavera");
			cColecao.addItem("primavera-outurno");
		}
		return cColecao;
	}

	/**
	 * This method initializes bConfirmar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBConfirmar() {
		if (bConfirmar == null) {
			bConfirmar = new JButton();
			bConfirmar.setBounds(new Rectangle(99, 269, 93, 20));
			bConfirmar.setText("Confirmar");
			bConfirmar.addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent e) {
						String desc = tDescricao.getText();
						String artigo = (String) cArti.getSelectedItem();
						String linha = (String) cLinha.getSelectedItem();
						String familia =(String) jComboBox.getSelectedItem();
						String colecao = (String) cColecao.getSelectedItem();
						String codsequ= (String) cColecao1.getSelectedItem();
						//falta a imagens
						if (artigo=="Escolha uma opcao"||linha=="Escolha uma opcao"||familia=="Escolha uma opcao"||colecao=="Escolha uma opcao"||codsequ=="Escolha uma opcao") {
							JOptionPane.showMessageDialog(null, "VC � CEGO???ESCOLHA UMA OPCAO", "SIGConfex -ERRO", JOptionPane.INFORMATION_MESSAGE, null);
						} else {
							Produto produto = new Produto();
							//produto.setCodigo(); AQUI VAI SER UM AUTOINCRENTE... COMO FAZER...
							produto.setDescricao(desc);
							produto.setArtigo(artigo);
							produto.setLinha(linha);
							produto.setFamilia(familia);
							produto.setColecao(colecao);
							produto.setCodigosequencial(codsequ);
							try {
								if (tDescricao.getText().equals("")){
									JOptionPane.showMessageDialog(null,"Por favor, preencha todos os campos!","Sig Confex - Erro!",	JOptionPane.INFORMATION_MESSAGE,null);
									tDescricao.requestFocus();							
								}else{
									
									Produto produtoTemp = null;
									//Teste de inser��o duplicada
									
									//ProdutoController controle = new ProdutoController();
									produtoTemp = Fachada.getInstancia().ConsultarProduto(produto, true);//controle.consultarProduto(produto, true);
				
									
									
									//produtoTemp  = Fachada.getInstancia().ConsultarProduto(produto,true);//
									if (produtoTemp  == null){
									
										Fachada.getInstancia().IncluiProduto(produto);
										JOptionPane.showMessageDialog(null,"Produto inserido com sucesso.","Confirma��o de inclus�o",JOptionPane.INFORMATION_MESSAGE,null);
								
									}
									else JOptionPane.showMessageDialog(null,"Produto j� existente.","Confirma��o de inclusao",JOptionPane.ERROR_MESSAGE,null);
									 							
								}
					} catch (Exception e1) {
						JOptionPane.showMessageDialog(null,"Produto n�o inserido.","Confirma��o de inclusao",JOptionPane.ERROR_MESSAGE,null);
						e1.printStackTrace();
					}
							tDescricao.setText("");
							cLinha.setSelectedItem("");
							cColecao.setSelectedItem("");
							cArti.setSelectedItem("");
							tDescricao.requestFocus();
						}
						
			
				}
			});
		}
		return bConfirmar;
	}

	/**
	 * This method initializes bLimpar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBLimpar() {
		if (bLimpar == null) {
			bLimpar = new JButton();
			bLimpar.setBounds(new Rectangle(202, 269, 93, 20));
			bLimpar.setText("Limpar");
			bLimpar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String tmp = "Escolha uma opcao";
					cArti.setSelectedItem(tmp);
					cLinha.setSelectedItem(tmp);
					cColecao.setSelectedItem(tmp);
					cColecao1.setSelectedItem(tmp);
					jComboBox.setSelectedItem(tmp);
					tDescricao.setText("");
					lImagem.setIcon(null);
				}
			});
		}
		return bLimpar;
	}

	/**
	 * This method initializes bCancelar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBCancelar() {
		if (bCancelar == null) {
			bCancelar = new JButton();
			bCancelar.setBounds(new Rectangle(305, 269, 93, 20));
			bCancelar.setText("Cancelar");
			bCancelar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					if (e.getSource()==bCancelar){
						int resposta =JOptionPane.showConfirmDialog(jContentPane,"Deseja Cancelar o Cadastro?","Confirmacao",JOptionPane.OK_CANCEL_OPTION);
						if (resposta==JOptionPane.OK_OPTION) {

							setVisible(false);
							dispose();

							dispose();

						}
					}
				}
			});
		}
		return bCancelar;
	}

	/**
	 * This method initializes bCarregar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBCarregar() {
		if (bCarregar == null) {
			bCarregar = new JButton();
			bCarregar.setBounds(new Rectangle(358, 208, 93, 20));
			bCarregar.setText("Carregar");
			bCarregar.setToolTipText("Clique aqui para buscar uma foto do produto e adicionar no sistema.");
			bCarregar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String tt=null;
					tt=loadFile();
					
					lImagem.setIcon(new ImageIcon(tt));
					
				}
			});
		}
		return bCarregar;
	}

	/**
	 * This method initializes jComboBox	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getJComboBox() {
		if (jComboBox == null) {
			jComboBox = new JComboBox();
			jComboBox.setBounds(new Rectangle(97, 167, 173, 20));
			jComboBox.addItem("Escolha uma opcao");
			jComboBox.addItem("vestuario tronco");
			jComboBox.addItem("vestuario membros inferiores");
			jComboBox.addItem("vestuario completo");
		}
		return jComboBox;
	}

	/**
	 * This method initializes cColecao1	
	 * 	
	 * @return javax.swing.JComboBox	
	 */
	private JComboBox getCColecao1() {
		if (cColecao1 == null) {
			cColecao1 = new JComboBox();
			cColecao1.setBounds(new Rectangle(128, 228, 173, 20));
			cColecao1.addItem("Escolha uma opcao");
			cColecao1.addItem("1010");
			cColecao1.addItem("1011");
			cColecao1.addItem("1012");
			cColecao1.addItem("1013");
			cColecao1.addItem("1014");
			cColecao1.addItem("1015");
			cColecao1.addItem("1016");
			
		}
		return cColecao1;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

